/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package net.easoftware.code.dao;

import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
import net.easoftware.code.beans.QueryParameter;
import net.easoftware.code.beans.facade.RangoEmpresaFc;
import net.easoftware.code.beans.facade.UnidadNegocio;
import net.easoftware.code.beans.jpa.RangoCodigosEmpresa;
import net.easoftware.code.error.EaError;
import net.easoftware.code.util.Tools;

/**
 *
 * @author eliu
 */
@SessionScoped
@Named
public class RangosEmpresaDao implements Serializable {

    @EJB
    PersistenceEjb ejb;

    /**
     *
     * @return
     */
    public List<RangoEmpresaFc> getAllRangos() throws EaError {
        List<RangoCodigosEmpresa> r = (List<RangoCodigosEmpresa>) ejb.doNamedQuery("RangoCodigosEmpresa.findAll",
                new QueryParameter[]{}, PersistenceEjb.LIST);
        List<RangoEmpresaFc> nRs = new LinkedList<>();
        for (RangoCodigosEmpresa ln : r) {
            RangoEmpresaFc re = (RangoEmpresaFc) Tools.cloneObject(ln, RangoEmpresaFc.class);
            re.setUnidadNegocio((UnidadNegocio) Tools.cloneObject(ln.getUnidadnegocio(), UnidadNegocio.class));
            nRs.add(re);
        }

        return nRs;
    }

    /**
     *
     * @param valMin
     * @param valMax
     * @param unidadNeg
     * @return
     */
    public List<RangoEmpresaFc> getRangosPorParametro(Integer valMin, Integer valMax, Integer unidadNeg) throws EaError {
        StringBuilder sb = new StringBuilder("select re from RangoCodigosEmpresa re where re.codigoInicio>=:valmin "
                + "and re.codigoFin<=:valmax");
        List<RangoCodigosEmpresa> r = (List<RangoCodigosEmpresa>) ejb.doJPAQuery(sb.toString(),
                new QueryParameter[]{
                    new QueryParameter("valmin", valMin),
                    new QueryParameter("valmax", valMax)
                }, PersistenceEjb.LIST);
        List<RangoEmpresaFc> nRs = new LinkedList<>();
        for (RangoCodigosEmpresa ln : r) {
            nRs.add((RangoEmpresaFc) Tools.cloneObject(ln, RangoEmpresaFc.class));
        }

        return nRs;
    }
}
